#ifndef DATOS_H
#define DATOS_H

#include <string>
#include <map>
#include <vector>
#include <string.h>
#include <iostream>
#include <sstream>
#include <stdlib.h>
#include "seePlayer.h"
#include "senseVar.h"
#include "hearVar.h"
using namespace std;

class Datos
{
    /** Las variables numero (Dorsal del jugador) y side (Lado de inicio)
      * se inicializan cuando recibimos una cadena de tipo init con setInit
      * las recuperamos con getNumero y getSide*/
    int numero;
    int ciclo;
    string side;
    string ultimaCadena; //Almacenamos COMPLETA la última cadena recibida (de momento solo la usa hear)
    map<string,SeeVar> Seeinst;
    map<string,SenseVar> Senseinst;
    map<string,HearVar> Hearinst;
    vector<vector <SeePlayer> > Seeplayer; // Dos vectores, uno para cada equipo con 11 venctores cada uno (uno por cada jugador)
public:
    Datos();
    vector<string> valores;
    bool verBola;
    bool hearEvent;
    void setCiclo(string _ciclo);
    void setValor (string dato);
    void setDatosSee(string instruccion,vector<string> valor);
    void setDatosSeePlayer(string _equipo, string _dorsal, vector<string> valor);
    void setDatosSense(string instruccion,vector<string> valor);
    void setDatosHear(string who, vector<string> data, string cadena);
    void setDatosHear(string who,string cadena);
    void setInit(vector<string> initData);
    int getNumero();
    int getCiclo();
    void setTrueHearEvent();  /** Si leemos una cadena de tipo hear ponemos a 1 hearEvent */
    void setFalseHearEvent(); /** Si la cadena no es de tipo hear hearEvent se pone a 0 */
    void setSide(string _side);
    string getSide();
    string getultimaCadena();
    SeePlayer getJugadorPropio(int dorsal);
    SeePlayer getJugadorContrario(int dorsal);
    SeeVar getSeeInst(string instruccion);
    SenseVar getSenseInst(string instruccion);
    HearVar getHearInst(string instruccion);
};



#endif // DATOS_H
